//=============================================================================

#ifndef ASTRING_H
  #define ASTRING_H

//=============================================================================

#include <windows.h>
#include "aList.h"

//=============================================================================

#define DEFAULT_BUFFSIZE 4096

//=============================================================================

class aString
{
  public:
    inline size_t asGetLength()const          {return m_Length;}
    inline const wchar_t* asGetString()const  {return m_pData;}
    inline const char* asGetStringChar()const {return m_pCharData;}
    inline UINT asGetCodePage()const          {return codePage;}
    inline size_t asGetCharSize()const        {return charSize;}

    aString();
    aString(const wchar_t* str);
    aString(const char* str);
    aString(const aString& str);

      bool operator==(const aString& str);
      bool operator==(const wchar_t* str);
      bool operator==(const char* str);
      bool operator!=(const aString& str);
      bool operator!=(const wchar_t* str);
      bool operator!=(const char* str);
      const aString& operator=(const aString& str);
      const aString& operator=(const wchar_t* str);
      const aString& operator=(const char* str);
      const aString operator+=(const aString& str);
      const aString operator+=(const wchar_t* str);
      const aString operator+=(wchar_t chr);
      const aString operator+(const aString& str);
      const aString operator+(const wchar_t* str);

      aString asFindBefore(wchar_t chr, bool include)const;
      aString asFindAfter(wchar_t chr, bool include)const;
      void asClear();
      void asGetWords(aList<aString>& list)const;
      const aString asAcceptWithParams(const char* str, ...);

    ~aString();

  private:
    size_t m_Length;
    wchar_t* m_pData;
    char* m_pCharData;
    const size_t charSize;
    UINT codePage;
    UINT codePageW;
};

//=============================================================================

#endif

//=============================================================================
